package com.qd.system.service.msg.client;

import com.alibaba.fastjson2.JSONObject;
import com.qd.common.panda.config.PandaParkConfigDTO;
import com.qd.common.sys.domain.sendmsg.FusionMsg;
import com.qd.common.sys.domain.sendmsg.MsgReceiver;
import com.qd.system.service.msg.server.MsgDistributionService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * @author sjk
 */
@Component
@Slf4j
@RequiredArgsConstructor
public class FusionMsgClientService {
    private final MsgDistributionService msgDistributionService;
    private final PandaParkConfigDTO parkConfigDTO;

    public void sendMsg(String wxTempId, String type, String msgClassIft, String mobile, String verCode, String signName, MsgReceiver msgReceiver,int sendFlag) {
        FusionMsg fusionMsg = new FusionMsg();
        //设置优先级 0 ~ 5
        fusionMsg.setLevel(5);
        //设置发送类型，可以根据需要设置
        //SENDFLAG_WEIXIN 微信消息
        //SENDFLAG_SMS 短信
        fusionMsg.setSendFlag(sendFlag);
        //不设置模版（WxTempId）参数时，发送内容使用Content
        //设置消息的类型，可以为空
        fusionMsg.getMsgContent().setType(type);
        //设置消息的事件来源，可以为空
        fusionMsg.getMsgContent().setEvent(msgClassIft);
        fusionMsg.getMsgContent().setContent(verCode);
        fusionMsg.getMsgProperties().addProp("WxTempId", wxTempId);
        fusionMsg.getMsgProperties().addProp("mobile", mobile);
        fusionMsg.getMsgProperties().addProp("signName", signName);
        fusionMsg.getMsgReceiver().add(msgReceiver);
        //发送组织
        fusionMsg.setSendOrgId("");
        fusionMsg.setAppId(parkConfigDTO.getDefaultAppId());
        msgDistributionService.sendFusionMsg(fusionMsg);
        JSONObject jsonObject = new JSONObject();
        fusionMsg.write(jsonObject);
        log.info(jsonObject.toJSONString());
    }

    public void sendMsg(String appId, String pagePath, String wxTempId, String msgId,
                        String bId, String type, String msgClassIft, MsgReceiver msgReceiver, int sendFlag) {
        FusionMsg fusionMsg = new FusionMsg();
        //设置优先级 0 ~ 5
        fusionMsg.setLevel(5);
        //设置发送类型，可以根据需要设置
        //SENDFLAG_WEIXIN 微信消息
        //SENDFLAG_SMS 短信
        fusionMsg.setSendFlag(sendFlag);
        //不设置模版（WxTempId）参数时，发送内容使用Content
        //设置消息的类型，可以为空
        fusionMsg.setFromMsgId(bId);
        fusionMsg.setFromMsgSubId(msgId);
        fusionMsg.getMsgContent().setType(type);
        //设置消息的事件来源，可以为空
        fusionMsg.getMsgContent().setEvent(msgClassIft);
        fusionMsg.getMsgProperties().addProp("WxTempId", wxTempId);
        if (sendFlag == FusionMsg.SEND_FLAG_WEIXIN) {
            if (StringUtils.hasLength(appId)) {
                fusionMsg.getMsgProperties().addProp("appid", appId);
            }
            if (StringUtils.hasLength(pagePath)) {
                fusionMsg.getMsgProperties().addProp("pagepath", pagePath);
            }
        }
        fusionMsg.getMsgReceiver().add(msgReceiver);
        //发送组织
        fusionMsg.setSendOrgId("");
        fusionMsg.setAppId(parkConfigDTO.getDefaultMiniProgramAppId());
        msgDistributionService.sendFusionMsg(fusionMsg);
        JSONObject jsonObject = new JSONObject();
        fusionMsg.write(jsonObject);
        log.info(jsonObject.toJSONString());
    }
}
